package v1

import (
	"gin-blog/model"
	"gin-blog/utils/msg"
	"github.com/gin-gonic/gin"
	"net/http"
	"strconv"
)

// 添加分类

// 根据分类名查询分类

// 根据单个分类查询该文类下的文章

// 根据分类id查询单个分类

// 查询分类列表

// 修改分类

// 删除分类

// AddCategory 添加分类
func AddCategory(c *gin.Context) {
	var category model.Category
	// 为Category进行数据绑定
	_ = c.ShouldBindJSON(&category)
	// 分类名检查
	code := model.CheckCategory(&category)
	if code == msg.SUCCESS {
		code = model.AddCategory(&category)
	}
	// 传出结果
	c.JSON(http.StatusOK, msg.R(code, "category", category))
}

// GetCategorys 查询分类列表
func GetCategorys(c *gin.Context) {

	code := msg.ERROR
	categorys, count := model.GetCategorys()
	if categorys != nil {
		code = msg.SUCCESS
	}
	var dataMap = make(map[string]interface{})
	dataMap["categorys"] = categorys
	dataMap["count"] = count
	c.JSON(http.StatusOK, msg.RS(code, dataMap))
}

// EditCategory 修改分类
func EditCategory(c *gin.Context) {
	var category model.Category
	err := c.ShouldBindJSON(&category)

	code := model.CheckCategory(&category)
	if code == msg.SUCCESS {
		if err != nil {
			code = msg.ERROR_REQUEST_DATA
		} else {
			code = model.EditCategory(&category)
		}
	}

	c.JSON(http.StatusOK, msg.R(code, "category", category))
}

// DeleteCategory 删除分类，软删除，不会真正删除，会在delete_at字段中插入删除时间，查询的时候也不会将这条数据查出来
func DeleteCategory(c *gin.Context) {
	id, _ := strconv.Atoi(c.Param("id"))
	code := model.DeleteCategory(id)
	c.JSON(http.StatusOK, msg.R(code, "id", id))
}
